/**
 * 这是使用 Crawlee 的最简单的示例，它演示了它的一些构建块，例如BasicCrawler.
 * 不过，您可能不需要这么深入，最好从像CheerioCrawler或 之类的全功能爬虫开始PlaywrightCrawler。
 * sendRequest该脚本只是使用实用程序函数（内部使用npm 模块）通过纯 HTTP 请求下载几个网页got-scraping ，并将其原始 HTML 和 URL 存储在默认数据集中。
 * 在本地配置中，数据将作为 JSON 文件存储在 ./storage/datasets/default.
 */

import { BasicCrawler, Dataset, log as logg } from 'crawlee';

// 创建BasicCrawler-最简单的爬网程序，可以启用用户自己实现爬网逻辑。
const crawler = new BasicCrawler({
    // 每个要抓取的 URL 都会调用该函数。
    async requestHandler({ request, sendRequest, log }) {
        const { url } = request;
        log.info(`处理 ${url}...`);

        // 通过crawlee sendRequest实用程序方法获取页面HTML
        // 情况默认下，该方法将使用正在处理的当前请求，因此不需要
        // 自己提供。如果需要，您也可以提供自定义请求。
        const { body } = await sendRequest();

        // 将 HTML 和 URL 存储到默认数据集。
        await Dataset.pushData({
            url,
            html: body,
        });
    },
});

// 要爬网的初始 URL 列表。这里我们只使用一些硬编码的 URL。
await crawler.addRequests([
    'https://www.google.com',
    'https://www.example.com',
    'https://www.bing.com',
    'https://www.wikipedia.com',
]);

// 运行爬虫并等待其完成
await crawler.run();

logg.info('爬虫完成!');
